<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>trzeros</title>
  </head>
  <body bgcolor="#FFFFFF">
    <center>Scilab Function</center>
    <div align="right">Last update : 16/12/2004</div>
    <p>
      <b>trzeros</b> -  transmission zeros and normal rank</p>
    <h3>
      <font color="blue">Calling Sequence</font>
    </h3>
    <dl>
      <dd>
        <tt>[tr]=trzeros(Sl)  </tt>
      </dd>
      <dd>
        <tt>[nt,dt,rk]=trzeros(Sl)  </tt>
      </dd>
    </dl>
    <h3>
      <font color="blue">Parameters</font>
    </h3>
    <ul>
      <li>
        <tt>
          <b>Sl</b>
        </tt>: linear system (<tt>
          <b>syslin</b>
        </tt> list)</li>
      <li>
        <tt>
          <b>nt</b>
        </tt>: complex vectors</li>
      <li>
        <tt>
          <b>dt</b>
        </tt>: real vector</li>
      <li>
        <tt>
          <b>rk</b>
        </tt>: integer (normal rank of Sl)</li>
    </ul>
    <h3>
      <font color="blue">Description</font>
    </h3>
    <p>
    Called with one output argument, <tt>
        <b>trzeros(Sl)</b>
      </tt> returns the 
    transmission zeros of the linear system <tt>
        <b>Sl</b>
      </tt>.</p>
    <p>
      <tt>
        <b>Sl</b>
      </tt> may have a polynomial (but square) <tt>
        <b>D</b>
      </tt> matrix.</p>
    <p>
    Called with 2 output arguments, <tt>
        <b>trzeros</b>
      </tt> returns the 
    transmission zeros of the linear system <tt>
        <b>Sl</b>
      </tt> as <tt>
        <b>tr=nt./dt</b>
      </tt>;</p>
    <p>
    (Note that some components of <tt>
        <b>dt</b>
      </tt> may be zeros)</p>
    <p>
    Called with 3 output arguments, <tt>
        <b>rk</b>
      </tt>  is the normal rank of <tt>
        <b>Sl</b>
      </tt>
    </p>
    <p>
    Transfer matrices are converted to state-space.</p>
    <p>
    If <tt>
        <b>Sl</b>
      </tt> is a (square) polynomial matrix <tt>
        <b>trzeros</b>
      </tt> returns the 
    roots of its determinant.</p>
    <p>
    For usual state-space system <tt>
        <b>trzeros</b>
      </tt> uses the state-space 
    algorithm of Emami-Naeni and Van Dooren.</p>
    <p>
    If <tt>
        <b>D</b>
      </tt> is invertible the transmission zeros are the eigenvalues
    of the "<tt>
        <b>A</b>
      </tt> matrix" of the inverse system : <tt>
        <b>A - B*inv(D)*C</b>
      </tt>;</p>
    <p>
    If <tt>
        <b>C*B</b>
      </tt> is invertible the transmission zeros are the eigenvalues
    of <tt>
        <b>N*A*M</b>
      </tt> where <tt>
        <b>M*N</b>
      </tt> is a full rank factorization of 
    <tt>
        <b>eye(A)-B*inv(C*B)*C</b>
      </tt>;</p>
    <p>
    For systems with a polynomial <tt>
        <b>D</b>
      </tt> matrix zeros are 
    calculated as the roots of the determinant of the system matrix.</p>
    <p>
    Caution: the computed zeros are not always reliable, in particular
    in case of repeated zeros.</p>
    <h3>
      <font color="blue">Examples</font>
    </h3>
    <pre>

W1=ssrand(2,2,5);trzeros(W1)    //call trzeros
roots(det(systmat(W1)))         //roots of det(system matrix)
s=poly(0,'s');W=[1/(s+1);1/(s-2)];W2=(s-3)*W*W';[nt,dt,rk]=trzeros(W2);
St=systmat(tf2ss(W2));[Q,Z,Qd,Zd,numbeps,numbeta]=kroneck(St);
St1=Q*St*Z;rowf=(Qd(1)+Qd(2)+1):(Qd(1)+Qd(2)+Qd(3));
colf=(Zd(1)+Zd(2)+1):(Zd(1)+Zd(2)+Zd(3));
roots(St1(rowf,colf)), nt./dt     //By Kronecker form
 
  </pre>
    <h3>
      <font color="blue">See Also</font>
    </h3>
    <p>
      <a href="../linear/gspec.htm">
        <tt>
          <b>gspec</b>
        </tt>
      </a>,&nbsp;&nbsp;<a href="../linear/kroneck.htm">
        <tt>
          <b>kroneck</b>
        </tt>
      </a>,&nbsp;&nbsp;</p>
  </body>
</html>
